package GOrden.mobile;

import java.io.*;
import java.net.*;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.*;
import org.w3c.dom.*;

public class XmlParseCausales {

	private URL Url;

	public XmlParseCausales(String url) {
		try {
			this.Url = new URL(url);
		} catch (MalformedURLException e) {
			throw new RuntimeException(e);
		}
	}

	public List<Causales> parse() {
		// Instanciamos la fábrica para DOM
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		List<Causales> causales = new ArrayList<Causales>();
		try {
			// Creamos un nuevo parser DOM
			DocumentBuilder builder = factory.newDocumentBuilder();
			// Realizamos lalectura completa del XML
			Document dom = builder.parse(this.getInputStream());
			// Nos posicionamos en el nodo principal del árbol (<rss>)
			Element root = dom.getDocumentElement();
			// Localizamos todos los elementos <item>
			NodeList items = root.getElementsByTagName("item");
			// Recorremos la lista de noticias
			for (int i = 0; i < items.getLength(); i++) {
				Causales act = new Causales();
				// Obtenemos la noticia actual
				Node item = items.item(i);
				// Obtenemos la lista de datos de la noticia actual
				NodeList datosNoticia = item.getChildNodes();
				// Procesamos cada dato de la noticia
				for (int j = 0; j < datosNoticia.getLength(); j++) {
					Node dato = datosNoticia.item(j);
					String etiqueta = dato.getNodeName();
					if (etiqueta.equals("codigo")) {
						act.setCodigo(dato.getFirstChild().getNodeValue());
					} else if (etiqueta.equals("descripcion")) {
						act.setDescripcion(dato.getFirstChild().getNodeValue());
					}
				}
				causales.add(act);
			}
			
		} catch (Exception ex) {
			throw new RuntimeException(ex);
		}
		return causales;
	}

	private InputStream getInputStream() {
		try {
			return Url.openConnection().getInputStream();
		} catch (IOException e) {
			throw new RuntimeException(e);
		}
	}

}
